package greed;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/*

不相交区间问题
给定 N 个开区间 [ai,bi]，请你在数轴上选择若干区间，使得选中的区间之间互不相交（不包括端点）
输出可选取区间的最大数量

第一行包含整数 N，表示区间数
接下来 N 行，每行包含两个整数 ai,bi，表示一个区间的两个端点

输出一个整数，表示可选取区间的最大数量

5
1 3
2 4
4 7
8 9
10 11

1, 3
4, 7
8, 9
10, 11

贪心策略
先把所有思路列出来：

1.优先选择开始时间最早的，经分析，不可行

2.优先选择持续时间最短的，经分析，不可行

3.优先选择结束时间最早的，经分析，可行

 */
public class SelectDisjointSection {
    
    static InOut1 io = new InOut1();
    int n;
    int[] begin;
    int[] end;
    public SelectDisjointSection() {
        n = io.nextInt();
        begin = new int[n];
        end = new int[n];
        for (int i = 0; i < n; i++) {
            begin[i] = io.nextInt();
            end[i] = io.nextInt();
        }
    }
    private void greed() {
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; i++) {
                if (end[j] > end[j+1]) {
                    int temp1 = begin[j];
                    begin[j] = begin[j+1];
                    begin[j+1] = temp1;
                    int temp2 = end[j];
                    end[j] = end[j+1];
                    end[j+1] = temp2;
                }
            }
        }
        int j = 0;
        io.out.println(begin[j] + ", " + end[j]);
        for (int i = 1; i < n; i++) {
            if (begin[i] >= end[j]) {
                io.out.println(begin[i] + ", " + end[i]);
                j = i;
            }
        }
    }

    public static void main(String[] args) {
        SelectDisjointSection s = new SelectDisjointSection();
        s.greed();
        io.out.flush();
    }

}
class InOut1 {
    BufferedReader br;
    StringTokenizer tok;
    PrintWriter out;
    InOut1() {
        br = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(new OutputStreamWriter(System.out));
    }
    public boolean hasNext() {
        while (tok == null || !tok.hasMoreElements()) {
            try {
                tok = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                return false;
            }
        }
        return true;
    }
    public String next() {
        if (hasNext()) {
            return tok.nextToken();
        }
        return null;
    }
    public int nextInt() {
        return Integer.parseInt(next());
    }
}